Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Динамічні бібліотеки (DLL)

Інформація про навчальний заклад

ВУЗ:
Дніпропетровський національний університет
Інститут:
О
Факультет:
ЗІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Операційні системи

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Дніпропетровський національний університет залізничного транспорту імені академіка В. Лазаряна Лабораторна робота №6 з предмету: «Операційні системи» на тему: «Динамічні бібліотеки (DLL)» 2015 Мета роботи: - ознайомитися з поняттям DLL; - вивчити способи створення DLL і варіанти роботи з ними; - отримати практичні навики створення і використання динамічних бібліотек. Теоретичні відомості Створення власної DLL З точки зору програміста - DLL є бібліотекою функцій (ресурсів), якими може користуватися будь-який процес, що завантажив цю бібліотеку. Саме завантаження, до речі, віднімає час і збільшує витрату споживаної додатком пам'яті; тому бездумне дроблення одного застосування на безліч DLL нічого хорошого не принесе. Інша справа - якщо якісь функції використовуються декількома застосуваннями. Тоді, помістивши їх в одну DLL, ми позбавимося від дублювання коди і скоротимо загальний об'єм додатків - і на диску, і в оперативній пам'яті. Можна виносити в DLL і рідко використовуваних функціях окремого застосування; Процесу, що завантажив, DLL доступні не всі її функції, а що лише явно надаються самій DLL для "зовнішнього світу" - т.з. що експортуються . Функції, призначені суто для "внутрішнього" користування, експортувати безглуздо (хоча і не заборонено). Чим більше функцій експортує DLL - тим повільніше вона завантажується; тому до проектування інтерфейсу (способу взаємодії DLL із зухвалим кодом) слід віднестися уважніше. Хороший інтерфейс інтуїтивно зрозумілий програмістові, небагатослівний і елегантний: як говориться, ні додати, ні відняти. Строгих рекомендацій із цього приводу дати неможливо - уміння приходить з досвідом. Для експортування функції з DLL - перед її описом слід вказати ключове слово __ declspec(dllexport). Виклик функції із DLL. Існує два способи завантаження DLL: з явною і неявною компоновкою. При неявній компоновці функції завантажуваними DLL додаються в секцію імпорту викликаючого файлу. При запуску такого файлу завантажувач операційної системи аналізує секцію імпорту і підключає всі вказані бібліотеки. Явна компоновка устраняет всі ці недоліки - ціною деякого ускладнення коди. Програмістові самому доведеться поклопотатися про завантаження DLL і підключенні функцій, що експортуються (не забуваючи при цьому про контроль над помилками, інакше в один прекрасний момент справа кінчиться зависанням системи). Зате явна компоновка дозволяє підвантажувати DLL в міру необхідності і дає програмістові можливість самостійно обробляти ситуації з відсутністю DLL. Можна піти і далі - не задавати ім'я DLL в програмі явно, а сканувати такий-то каталог на предмет наявності динамічних бібліотек і підключати всі знайдені до додатка. Саме так працює механізм підтримки plug-in’ов в популярному файлі-менеджерові FAR (та і не тільки в нім). Таким чином, неявною компоновкою доцільно користуватися лише для підключення завантажуваних в кожному сеансі, життєво необхідних для роботи додатка динамічних бібліотек; у всіх останніх випадках - переважно явна компоновка. Загрузка DLL з неявною компоновкою Щоб викликати функцію з DLL, її необхідно оголосити в зухвалому коді - або як external (тобто як звичайну зовнішню функцію), або передувати ключовим словом __declspec(dllimport). Перший спосіб популярніший, але другий все ж переважно - в цьому випадку компілятор, зрозумівши, що функція викликається саме з DLL, зможе відповідним чином оптимізувати код. Загрузка DLL з явною компоновкою Явне завантаження динамічних бібліотек здійснює функція HINSTANCE Loadlibrary(LPCTSTR lplibfilename) або її розширений аналог HINSTANCE Loadlibraryex(LPCTSTR lplibfilename, HANDLE hfile, DWORD dwflags). Обидві вони експортуються з Kernel32.DLL, отже, кожне застосування вимагає неявної компоновки принаймні цієї бібліотеки. В разі успішного завантаження DLL повертається лінійна адреса бібліотеки в ...
Антиботан аватар за замовчуванням

07.05.2015 11:05

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини